home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / MacTechNotes / Platforms & Tools / Stand-Alone Code Folder / SAGlobalsƒ / SAGlobals.inc1.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-15  |  1009 b   |  50 lines  |  [TEXT/MPS ]

  1.  
  2. #include <Memory.h>
  3. #include <OSUtils.h>
  4.  
  5. #define kAppParmsSize 32
  6.  
  7.  
  8. long A5Size (void);
  9. /* prototype for routine in Runtime.o */
  10.  
  11. void A5Init (Ptr myA5);
  12. /* prototype for routine in Runtime.o */
  13.  
  14. pascal void MakeA5World (A5RefType *A5Ref) {
  15.     *A5Ref = NewHandle(A5Size());
  16.     if ((long)*A5Ref) {
  17.         HLock((Handle)*A5Ref);
  18.         A5Init((Ptr)( (long)**A5Ref + A5Size() - kAppParmsSize));
  19.         HUnlock((Handle)*A5Ref);
  20.     }
  21. }
  22.  
  23. pascal long SetA5World (A5RefType A5Ref) {
  24.     HLock((Handle)A5Ref);
  25.     return SetA5( (long)*A5Ref + A5Size() - kAppParmsSize);
  26. }
  27.  
  28. pascal void RestoreA5World (long oldA5, A5RefType A5Ref) {
  29.     if (SetA5(oldA5)) {}    /* side effect only */
  30.     HUnlock((Handle)A5Ref);
  31. }
  32.  
  33. pascal void DisposeA5World (A5RefType A5Ref) {
  34.     DisposHandle((Handle)A5Ref);
  35. }
  36.  
  37. pascal long OpenA5World (A5RefType *A5Ref) {
  38.     MakeA5World(A5Ref);
  39.     if ((long)*A5Ref) {
  40.         return SetA5World(*A5Ref);
  41.     } else {
  42.         return 0;
  43.     }
  44. }
  45.  
  46. pascal void CloseA5World (long oldA5, A5RefType A5Ref) {
  47.     RestoreA5World(oldA5, A5Ref);
  48.     DisposeA5World(A5Ref);
  49. }
  50.